import VueI18n from 'vue-i18n'
import messages from 'src/i18n'
import { api } from '../plugins/axios.instance'

export default async ({ app, Vue }) => {
  Vue.use(VueI18n)
  // 设置app 国际化
  const i18n = new VueI18n({
    locale: '',
    fallbackLocale: '',
    messages
  })

  const loadedLanguages = [] // 我们的预装默认语言

  function setI18nLanguage (lang) {
    i18n.locale = lang
    document.querySelector('html').setAttribute('lang', lang)
    return lang
  }
  Vue.prototype.$setLocale = function (lang) {
    if (i18n.locale !== lang) {
      if (!loadedLanguages.includes(lang)) {
        return import(`src/i18n/${lang}`).then(async msgs => {
          // 这里异步获取国际化数据
          await api({
            method: 'post',
            url: '/mdm/i18ntext/query',
            params: {
              i18nCode: lang.split('-')[0],
              pageNo: 1,
              pageSize: 0
            },
            emulateJSON: true,
            useLoadLayer: true,
            successCallback: ({ data }) => {
              data.list.map(item => {
                msgs.default[item.key] = item.value
              })
            },
            errorCallback (err) {
              console.log('未处理的业务级error：', err)
            }
          })
          i18n.setLocaleMessage(lang, msgs.default)
          loadedLanguages.push(lang)
          return setI18nLanguage(lang)
          // i18n.setLocaleMessage(lang, msgs.default)
          // loadedLanguages.push(lang)
          // return setI18nLanguage(lang)
        })
      }
      return Promise.resolve(setI18nLanguage(lang))
    }
    return Promise.resolve(lang)
  }
  app.i18n = i18n

  // function (locale) {
  //   i18n.locale = locale
  // }
}
